package io.kiki.task.server.retry.task.client;


import io.kiki.task.client.model.DispatchRetryDTO;
import io.kiki.task.client.model.DispatchRetryResultDTO;
import io.kiki.task.client.model.GenerateRetryIdempotentIdDTO;
import io.kiki.task.client.model.RetryCallbackDTO;
import io.kiki.task.common.core.model.Result;
import io.kiki.task.common.core.model.SnailJobHeaders;
import io.kiki.task.server.common.rpc.client.annotation.Body;
import io.kiki.task.server.common.rpc.client.annotation.Header;
import io.kiki.task.server.common.rpc.client.annotation.Path;

import static io.kiki.task.common.core.constant.SystemConstants.HTTP_PATH.*;

/**
 * 调用客户端接口
 */
public interface RetryRpcClient {

    @Path(value = RETRY_DISPATCH)
    Result<DispatchRetryResultDTO> dispatch(@Body DispatchRetryDTO dispatchRetryDTO, @Header SnailJobHeaders headers);

    @Path(value = RETRY_CALLBACK)
    Result callback(@Body RetryCallbackDTO retryCallbackDTO);

    @Path(value = RETRY_GENERATE_IDEM_ID)
    Result generateIdempotentId(@Body GenerateRetryIdempotentIdDTO retryCallbackDTO);

}
